package com.dhcc.stream;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.IntFunction;
import java.util.function.Predicate;
import java.util.stream.Stream;

/**
 * @ClassName: Stream_01
 * @Description: 初玩Stream,终结方法
 * @author weiyongpeng
 * @date 2023年5月7日 下午3:11:47
 */
public class Stream_07 {
	public static <T> void main(String[] args) {
		/**
		 * 流里面的终结方法
		 * forEach：遍历
		 * count：统计
		 * toArray：收集到数组中
		 * collect：收集到集合里
		 */
		List<String> list = new ArrayList<>();
		Collections.addAll(list, "张三","李四","王五","孙琪","六大能");
		Stream<String> stream = list.stream();
		System.out.println("---------------------");
		// 匿名内部类的写法
//		stream.forEach(new Consumer<String>() {
//			
//			@Override
//			public void accept(String t) {
//				// TODO Auto-generated method stub
//				System.out.println(t);
//			}
//			
//		});
		// lambda的形式写法
//		stream.forEach(System.out::println);
		// 写法2
//		stream.forEach(s->System.out.println(s));
		System.out.println("---------------------");
		// 统计流中元素
//		long count = stream.count();
//		System.out.println("流中的元素个数="+count);
		System.out.println("---------------------");
		// toArray 收集到一个数组中
//		Object[] array = stream.toArray();
//		System.out.println(Arrays.toString(array));
		String[] array = stream.toArray(new IntFunction<String[]>() {

			@Override
			public String[] apply(int value) {
				// TODO Auto-generated method stub
				return new String[value];
			}
			
		});
		System.out.println(Arrays.toString(array));
	}
}
